import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
from mtest import true_false_test
# nastavenie jazyka
from locale import setlocale, LC_ALL
from platform import uname
if uname()[0] == 'Linux':
setlocale(LC_ALL, 'sk_SK.utf8')
else:
setlocale(LC_ALL, 'sk_SK')
plt.rcParams["axes.formatter.use_locale"] = True
V nasledujúcich príkladoch budeme kresliť grafy základných elementárnych funkcií spolu s ich deriváciami.
To, že derivácia je správne vyrátaná, budeme overovať graficky. Skúška správnosti pozostáva z nakreslenia dotyčnice grafu funkcie pre vybrané body. Predpis pre dotyčnicu grafu funkcie $f$ v bode $[a,f(a)]$ má tvar $$y = f'(a) (x-a) + f(a).$$
Dokumentácia:
Zostrojenie derivácie funkcie $$y = x^3+3x^2-9x-10.$$ Správnosť riešenia je overená graficky.
####
#### nakreslenie grafu funkcie a jej derivácie
####
## vstupné údaje
def f(X): return X ** 3 - 3 * X ** 2 - 9 * X - 10 # ufunc verzia funkcie
X = np.linspace(-2, 6, 8*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
def df(X): return 3 * X ** 2 - 6 * X - 9 # ufunc verzia derivácie
dX = X # tie prvky z X, ktoré patria do definičného oboru derivácie
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(8, 6) # veľkosť obrázka (východzia hodnota je 6x4)
## diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
# ax.grid() # pravoúhla sieť
ax.set_ylim(-40, 45) # ohraničenie hodnôt pre os y
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = x^3+3x^2-9x-10$")
## graf derivácie
ax.plot(dX, df(dX), label=r"derivácia $y = 3x^2+6x-9$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
## legenda
ax.legend(loc='upper center')
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Nájdite deriváciu funkcie $$y = a^x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
a = 2 # riešenie otestujte aj pre inú hodnotu parametra a, napr. pre a = 3 alebo a = np.e
def f(X): return a ** X
X = np.linspace(-2, 2, 4*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 6)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(0, 4.3)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = {}^x$".format(a))
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
ax.legend(loc='upper center')
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \log_a x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
a = 2 # riešenie otestujte aj pre inú hodnotu parametra a, napr. pre a = 3 alebo a = np.e
def f(X): return np.log(X) / np.log(a)
X = np.linspace(0, 4, 4*100+1)
X = X[X != 0] # číslo 0 nepatrí do oboru definície
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 6)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.set_ylim(-2.2, 2.2)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \log_{{{0}}}\,x$".format(a))
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend(loc='upper center')
ax.legend(loc=(0.30, 0.90))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \sin x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.sin(X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 3)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
## x-ová os
xtick_numerators = range(-4, 8+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-2.1, 2.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \sin\,x$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend(loc='upper center')
ax.legend(loc=(0.40, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \cos x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.cos(X)
X = np.linspace(-2*np.pi, 4*np.pi, 12*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 3)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
## x-ová os
xtick_numerators = range(-4, 8+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-2.1, 2.1)
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \cos\,x$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend(loc='upper center')
ax.legend(loc=(0.40, 1.00))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \tan x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
####
### zadanie
## vstupné údaje
def f(X): return np.tan(X)
X = np.linspace(-(5/2)*np.pi, (5/2)*np.pi, 10*100+1)
# pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru funkcie
Is = []
for n in range(-5, 5, 2):
Is.append(X[(n*np.pi/2 < X) & (X < (n+2)*np.pi/2)])
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 8)
## diagram
init_subplot(ax)
ax.set_aspect(1/2*np.pi)
## x-ová os
xtick_numerators = range(-5, 5+1)
ax.set_xticks([n * np.pi / 2 for n in xtick_numerators])
ax.set_xticklabels([smart_ticklabel(n, r"\pi", 2) for n in xtick_numerators])
## y-ová os
ax.set_ylim(-5, 5)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \tan\,x$")[0].get_color()
for I in Is:
ax.plot(I, f(I), c=color)
## asymptoty bez smernice
Ay = np.linspace(-5, 5)
for n in range(-5, 5+1, 2):
Ax = np.ones(len(Ay)) * n * np.pi/2
ax.plot(Ax, Ay, 'k--', lw=1)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dIs = None # pole intervalov, ktoré obsahujú prvky z X patriace do definičného oboru derivácie
## graf derivácie
# color = ax.plot([], [], label=r"derivácia $y = \ldots$")[0].get_color()
# for dI in dIs:
# ax.plot(dI, df(dI), c=color)
## skúška správnosti
# for dI in dIs:
# true_false_test(ax, f, dI, df)
### dokončenie
# ax.legend(loc='upper center')
ax.legend(loc=(0.375, 1.01))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \arcsin x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia/riešenie)
####
### zadanie
## vstupné údaje
def f(X): return np.arcsin(X)
X = np.linspace(-1, 1, 2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 10)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# y-ová os
ytick_numerators = range(-2, 4+1)
ax.set_yticks([n * np.pi / 4 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 4) for n in ytick_numerators])
## y-ová os
ax.set_ylim(-np.pi/2*1.1, np.pi*1.1)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \arcsin\,x$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot([-1, 1], [-np.pi/2, np.pi/2], 'o', c=color)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.175, 1.03))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \arccos x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia/riešenie)
####
### zadanie
## vstupné údaje
def f(X): return np.arccos(X)
X = np.linspace(-1, 1, 2*100+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 10)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
# y-ová os
ytick_numerators = range(-4, 4+1)
ax.set_yticks([n * np.pi / 4 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 4) for n in ytick_numerators])
## y-ová os
ax.set_ylim(-np.pi*1.1, np.pi*1.1)
## graf funkcie
color = ax.plot([], [], label=r"funkcia $y = \arccos\,x$")[0].get_color()
ax.plot(X, f(X), c=color)
ax.plot([-1, 1], [np.pi, 0], 'o', c=color)
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
# ax.legend()
ax.legend(loc=(0.05, 1.03))
# fig.savefig("<meno súboru>.png")
fig.show()
Nájdite deriváciu funkcie $$y = \arctan x.$$ Overte graficky, že riešenie je správne.
####
#### nakreslenie grafu funkcie a jej derivácie (šablóna riešenia)
### zadanie
## vstupné údaje
def f(X): return np.arctan(X)
X = np.linspace(-6, 6, 10*10+1)
## obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(9, 4)
## diagram
init_subplot(ax)
ax.set_aspect('equal')
## y-ová os
ax.set_ylim(-np.pi/2*1.1, np.pi/2*1.1)
ytick_numerators = range(-1, 1+1)
ax.set_yticks([n * np.pi / 2 for n in ytick_numerators])
ax.set_yticklabels([smart_ticklabel(n, r"\pi", 2) for n in ytick_numerators])
## graf funkcie
ax.plot(X, f(X), label=r"funkcia $y = \arctan\,x$")
### riešenie (tieto údaje upravte)
## derivácia
# def df(X): return None # ufunc verzia derivácie
# dX = None # tie prvky z X, ktoré patria do definičného oboru derivácie
## graf derivácie
# ax.plot(dX, df(dX), label=r"derivácia $y = \ldots$")
## skúška správnosti
# true_false_test(ax, f, dX, df)
### dokončenie
ax.legend(loc='upper left')
# fig.savefig("<meno súboru>.png")
fig.show()